package com.train.common.service;

import org.springframework.web.multipart.MultipartFile;

import java.util.Map;

/**
 * MinIO服务接口
 */
public interface MinioService {

    /**
     * 上传文件
     * @param file 文件
     * @param prefix 文件前缀（目录）
     * @return 存储的对象名称
     */
    String uploadFile(MultipartFile file, String prefix);

    /**
     * 删除文件
     * @param objectName 对象名称
     */
    void deleteFile(String objectName);

    /**
     * 获取预签名URL
     * @param objectName 对象名称
     * @param expires 过期时间（秒）
     * @return 预签名URL
     */
    String getPresignedUrl(String objectName, int expires);

    /**
     * 获取预签名上传URL（用于前端直传）
     * @param originalFilename 原始文件名
     * @param prefix 文件前缀（目录）
     * @return 包含上传URL和对象名称的map
     */
    Map<String, String> getUploadCredentials(String originalFilename, String prefix);
    
    /**
     * 获取永久访问URL
     * @param objectName 对象名称
     * @return 永久访问URL
     */
    String getPermanentUrl(String objectName);
}